package com.xt.purchasingsystem.service.impl.productDesignServiceImpl.proMateComPDesServiceImpl;

import com.xt.purchasingsystem.dto.DFileDto;
import com.xt.purchasingsystem.dto.DModuleDto;
import com.xt.purchasingsystem.mapper.DFileMapper;
import com.xt.purchasingsystem.mapper.DModuleDetailsMapper;
import com.xt.purchasingsystem.mapper.DModuleMapper;
import com.xt.purchasingsystem.model.DFile;
import com.xt.purchasingsystem.model.DModuleDetails;
import com.xt.purchasingsystem.service.productDesignService.proMateComPDesService.ProMateComPDesService;
import com.xt.purchasingsystem.utils.PageBean;
import com.xt.purchasingsystem.utils.Result;
import com.xt.purchasingsystem.utils.ResultFactory;
import com.xt.purchasingsystem.utils.SerialNumberUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


import java.util.List;

/**
 * 产品设计->产品物料组成设计 业务实现类
 * Author: 老姚
 * Date:  2020/3/14 10:06
 */
@Service
@Transactional

public class ProMateComPDesServiceImpl implements ProMateComPDesService {
    @Autowired
    private DFileMapper dFileMapper;
    @Autowired
    private DModuleMapper dModuleMapper;
    @Autowired
    private DModuleDetailsMapper dModuleDetailsMapper;
    @Override
    public Result queryDFileByFormulateMaterialCompos(DFileDto dFileDto) {
        int rowCount = dFileMapper.rowCountByFormulateMaterialCompos(dFileDto);
        PageBean pageBean=new PageBean(dFileDto.getPageSize(),dFileDto.getCurrNo(),rowCount);
        dFileDto.setCurrNo(pageBean.getStart());
        dFileDto.setPageSize(pageBean.getEnd());
        List<DFile> dFiles = dFileMapper.queryDFileByFormulateMaterialCompos(dFileDto);
        pageBean.setPageList(dFiles);
        return ResultFactory.buildSuccessResult("查询成功",pageBean);
    }

    @Override
    public Result queryAvailableMaterial(DFileDto dFileDto) {
        int rowCount = dFileMapper.rowCountByAvailableMaterial(dFileDto);
        PageBean pageBean=new PageBean(dFileDto.getPageSize(),dFileDto.getCurrNo(),rowCount);
        dFileDto.setCurrNo(pageBean.getStart());
        dFileDto.setPageSize(pageBean.getEnd());
        List<DFile> dFiles = dFileMapper.queryDFileByAvailableMaterial(dFileDto);
        pageBean.setPageList(dFiles);
        return ResultFactory.buildSuccessResult("查询成功",pageBean);
    }

    @Override
    public Result addMaterialCompositionDesignSheet(DModuleDto dModuleDto) {
        dFileMapper.designDFileById(dModuleDto.getDmodule().getProductId());
        dModuleDto.getDmodule().setDesignId(SerialNumberUtil.materialDesignSerNumber());
        dModuleMapper.insert(dModuleDto.getDmodule());
       Integer id =dModuleDto.getDmodule().getId();
        for (int i = 0; i < dModuleDto.getDmoduleDetails().size(); i++) {
            dModuleDto.getDmoduleDetails().get(i).setParentId(id);
            dModuleDto.getDmoduleDetails().get(i).setDetailsNumber(i+1);
            dModuleDetailsMapper.insert( dModuleDto.getDmoduleDetails().get(i));
        }
        return  ResultFactory.buildSuccessResult("提交成功,需要审核");
    }

    @Override
    public Result getAllMaterialCompositionDesignSheet(DModuleDto dModuleDto) {
        int rowCount = dModuleMapper.rowCountByAllDModule();
        PageBean pageBean=new PageBean(dModuleDto.getPageSize(),dModuleDto.getCurrNo(),rowCount);
        dModuleDto.setCurrNo(pageBean.getStart());
        dModuleDto.setPageSize(pageBean.getEnd());
        List<DModuleDto> dModuleDtos = dModuleMapper.queryAllDModuleByPageBean(dModuleDto);
        pageBean.setPageList(dModuleDtos);
        return  ResultFactory.buildSuccessResult("查询成功",pageBean);
    }

    @Override
    public Result reviewMaterialDesignList(DModuleDto dModuleDto) {
        dModuleMapper.updateByPrimaryKeySelective(dModuleDto.getDmodule());
        for (DModuleDetails dmoduleDetail : dModuleDto.getDmoduleDetails()) {
            dModuleDetailsMapper.updateByPrimaryKeySelective(dmoduleDetail);
        }
        return ResultFactory.buildSuccessResult("审核成功");
    }
}
